/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import java.sql.*;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import negocio.Empleado;
import negocio.Incidencia;
import java.util.Date;
/**
 *
 * @author JAVA
 */
public class PersistenciaEmpleado {

    public static List<Empleado> mostrarDependientes() {
        List<Empleado> dep = new ArrayList<Empleado>();
        try {           
            Connection con = null;
            Statement st = null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin from empleado where empleado.baja=0 and empleado.encargado=0");
            while(r.next()){
                Empleado d=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Dependiente");
                dep.add(d);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        }     
        return dep;
    }
    
    public static List<Empleado> mostrarEncargados() {
        List<Empleado> en = new ArrayList<Empleado>();
        try {           
            Connection con = null;
            Statement st = null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin from empleado where empleado.baja=0 and empleado.encargado=1");
            while(r.next()){
                Empleado e=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Encargado");
                en.add(e);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        }     
        return en;
    }
    
    public static int verificarLogin(String nomusuario){
        int n=0;
        try {          
            Connection con=null;
            Statement st=null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select count(*) as numero from empleado where empleado.nombreusuario='"+nomusuario+"'");           
            r.next();
            n = r.getInt("numero");
            r.close() ;
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            return n;
        }
    }
    
    public static int eliminarEmpleado(int codigo) throws Exception{
        int n=0;
        try {
            
            Connection con=null;
            Statement st=null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            n=st.executeUpdate("update empleado set baja=1 where empleado.id="+codigo);                       
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            return n;
        }
    }
    
    public static int modificarEmpleado(int codigo,String nombre,String valor){
        int n=0;
        try {          
            Connection con=null;
            Statement st=null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            n=st.executeUpdate("update empleado set "+nombre+"='"+valor+"' where empleado.id="+codigo);                       
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            return n;
        }
    }
    
    public static int insertarEmpleado(Empleado e)throws Exception{
        int i=0;
        Connection con=null;
        Statement st=null;
        try {           
            
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            if(e.getTipo().compareTo("Dependiente")==0){
                i=st.executeUpdate("insert into empleado (id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin,encargado) values "
                    + "(0,'"+e.getNombre()+"','"+e.getApellidos()+"','"+e.getDni()+"','"+e.getDomicilio()+"','"+e.getTelefono()+"','"+e.getEmail()+"','"+e.getNomUsuario()+"',"+e.getPin()+",0)");
            }
            else if(e.getTipo().compareTo("Encargado")==0){
                i=st.executeUpdate("insert into empleado (id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin,encargado) values "
                    + "(0,'"+e.getNombre()+"','"+e.getApellidos()+"','"+e.getDni()+"','"+e.getDomicilio()+"','"+e.getTelefono()+"','"+e.getEmail()+"','"+e.getNomUsuario()+"',"+e.getPin()+",1)");
            }
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return i;
    }
    
    public static Empleado comprobarLogin(String nombreusuario,int pin){
        Empleado e=null;
        try {          
            Connection con=null;
            Statement st=null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin,encargado from empleado where nombreusuario='"+nombreusuario+"' and pin="+pin+" and baja=0");           
            while(r.next()){
                if(r.getInt("encargado")==1){
                    e=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Encargado");
                }
                else{
                    e=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Dependiente");
                }
            }
            r.close() ;
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            return e;
        }
    }
    
    public static Empleado obtenerEmpleado(int codigo){
        Empleado e=null;
        try {          
            Connection con=null;
            Statement st=null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select id,nombre,apellidos,dni,domicilio,telefono,email,nombreusuario,pin,encargado from empleado where empleado.id="+codigo+" and baja=0");           
            while(r.next()){
                if(r.getInt("encargado")==1){
                    e=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Encargado");
                }
                else{
                    e=new Empleado(r.getInt("id"),r.getString("nombre"),r.getString("apellidos"),r.getString("dni"),r.getString("domicilio"),r.getString("telefono"),r.getString("email"),r.getString("nombreusuario"),r.getInt("pin"),"Empleado");
                }
            }
            r.close() ;
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaProveedor.class.getName()).log(Level.SEVERE, null, ex);
        }
        finally{
            return e;
        }
    }
    
    public static int insertarIncidencia(Incidencia i){
        int n=0;
        Connection con=null;
        Statement st=null;
        java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String fecha = sdf.format(i.getFecha());
        try {           
            
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            n=st.executeUpdate("insert into incidencia (id,idempleado,descripcion,fecha) values "
                    + "(0,"+i.getE().getId()+",'"+i.getDescripcion()+"','"+fecha+"')");            
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaPromocion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return n;
    }
    
    public static List<Incidencia> mostrarIncidencias(){
        List<Incidencia> inc = new ArrayList<Incidencia>();
        
        try {           
            Connection con = null;
            Statement st = null;
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con=DriverManager.getConnection("jdbc:mysql://192.168.1.18/videoclub","cibernos","1234");
            st=con.createStatement();
            ResultSet r=st.executeQuery("select idempleado,descripcion,fecha from incidencia");
            while(r.next()){
                Empleado e=obtenerEmpleado(r.getInt("idempleado"));
                Date d=r.getDate("fecha");
                Incidencia i=new Incidencia(r.getString("descripcion"),d,e);
                inc.add(i);
            }
            r.close();
            st.close();
            con.close();
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(PersistenciaEmpleado.class.getName()).log(Level.SEVERE, null, ex);
        }     
        return inc;
    }
 
}
